<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/jquery-1.10.1.min.js"></script>
    <style>
        * {
            padding: 0;
            margin: 0;
        }

        li {
            list-style: none;
        }

        .list li {
            line-height: 32px;
            border: 1px solid rgb(114, 113, 109);
            width: 100px;
            text-align: center;
        }
    </style>
</head>

<body>
    <div id="wrap">
        <h2>jQuery选择器</h2>
        <div class="list">
            <li>00</li>
            <li class="first">01</li>
            <li>02</li>
            <li>03</li>
            <li class="mid">周宇</li>
            <li>05</li>
            <li class="last"><span>06</span></li>
        </div>
    </div>
</body>
<script>
    // jQuery过滤中的方法

    // eq(index|-index)   匹配集合中对应下标的元素
    $(".list li").eq(0).css({ background: "#E05A73" });
    // 负值 length -1
    $(".list li").eq(-1).css({ background: "#E05A73" });

    $(".list li").click(function () {
        $(this).css({ background: "#E05A73" }).siblings().css({ background: "none" })
    })

    // first()  匹配集合中第一个元素
    // last()   匹配集合中最后一个元素
    $(".list li").first().css({ background: "#E19B99" });
    $(".list li").last().css({ background: "#E19B99" });

    // hasClass()  判断匹配的元素中是否存在某个类名  存在返回 true 否则返回false
    // 单元素  => 精确匹配
    console.log($(".first").hasClass("last"));
    // 多元素  => 只要有一个元素满足即可
    console.log($(".list li").hasClass("last"));

</script>


<script>
    // filter(selector|dom|jquery|callback)  筛选出与指定表达式匹配的元素集合

    // 1.接收一个选择器作为筛选条件
    $(".list li").filter(".first,.last").css({ background: "#D6D0C5" })
    $(".list li").filter("[class]").css({ background: "#D6D0C5" })
    $(".list li").filter(":not(.first)").css({ background: "#E19B99" })
    // 2.接收一个原生dom原生元素/元素的集合 作为筛选条件
    var first = document.getElementsByClassName("first")[0];
    $(".list li").filter(first).css({ background: "#F3CA4F" });
    // 3.接收一个jQuery对象 作为筛选条件
    $(".list li").filter($(".last")).css({ background: "#F3CA4F" });
    // 4.接收一个回调函数 回调函数返回一个条件 把满足条件的元素筛选出来放到集合(jQuery对象)中
    $(".list li").filter(function (index, item) {
        // return $(this).hasClass("first") || $(this).hasClass("last");  //筛选出 class名为 first 或 last的
        return $(this).prop("className");  //筛选出有class名的
    }).css({ background: "#8CCBBB" });



    // not(selector|dom|jquery|callback)  删除与指定表达式匹配的元素集合
    // 1.接收一个选择器作为筛选条件
    $(".list li").not(".first,.last").css({ background: "#7D47AD" })
    $(".list li").not("[class]").css({ background: "#7D47AD" })
    $(".list li").not(":not(.first)").css({ background: "#7D47AD" })
    // 2.接收一个原生dom原生元素/元素的集合 作为筛选条件
    var first = document.getElementsByClassName("first")[0];
    $(".list li").not(first).css({ background: "#7D47AD" });
    // 3.接收一个jQuery对象 作为筛选条件
    $(".list li").not($(".last")).css({ background: "#7D47AD" });
    // 4.接收一个回调函数 回调函数返回一个条件 把满足条件的元素筛选出来放到集合(jQuery对象)中
    $(".list li").not(function (index, item) {
        return $(this).prop("className");  //筛选出不含有class名的
    }).css({ background: "#7D47AD" });



    // is(selector|dom|jquery|callback)  判断集合中是否存在与指定表达式匹配的元素 存在 => true  不存在 => false (类似数组中的some)
    // 单元素  => 精确匹配
    // 多元素  => 只要有一个元素满足即可

    // 1.接收一个选择器作为筛选条件
    console.log($(".list li").is(".first,.last"));
    // 2.接收一个原生dom原生元素/元素的集合 作为筛选条件
    var first = document.getElementsByClassName("first")[0];
    console.log($(".list li").is(first));;

    var liList = document.querySelectorAll(".first,.last");
    console.log($(".list li").is(liList));
    // 3.接收一个jQuery对象 作为筛选条件
    console.log($(".list li").is($(".last")));
    // 4.接收一个回调函数 回调函数返回一个条件 只要有一个元素满足条件返回true  都不满足返回false
    var list = $(".list li").is(function (index, item) {
        return $(this).prop("className") == "hhh";  //判断是否有元素的class名为hhh
    });
    console.log(list);



    // map()  接收一个回调函数，根据回调函的返回值生成一个新的集合(jQuery对象)
    $(".list li").map(function(index,item){
        return $(this).text();
    })
</script>

</html>